package com.bank.mapper;

import com.bank.entity.Deposit;
import org.apache.ibatis.annotations.*;
import java.util.List;

/**
 * 存款类型数据访问接口
 * 提供对deposit表的增删改查操作
 * 使用MyBatis注解方式实现SQL映射
 */
@Mapper
public interface DepositMapper {
    /**
     * 查询所有存款类型
     * @return 存款类型列表
     */
    @Select("SELECT * FROM deposit")
    List<Deposit> findAll();

    /**
     * 根据ID查询存款类型
     * @param savingID 存款类型ID
     * @return 存款类型对象
     */
    @Select("SELECT * FROM deposit WHERE savingID = #{savingID}")
    Deposit findById(Integer savingID);

    /**
     * 新增存款类型
     * @param deposit 存款类型对象
     * @return 影响的行数
     */
    @Insert("INSERT INTO deposit(savingName, descrip) VALUES(#{savingName}, #{descrip})")
    @Options(useGeneratedKeys = true, keyProperty = "savingID")
    int insert(Deposit deposit);

    /**
     * 修改存款类型
     * @param deposit 存款类型对象
     * @return 影响的行数
     */
    @Update("UPDATE deposit SET savingName = #{savingName}, descrip = #{descrip} WHERE savingID = #{savingID}")
    int update(Deposit deposit);

    /**
     * 删除存款类型
     * @param savingID 存款类型ID
     * @return 影响的行数
     */
    @Delete("DELETE FROM deposit WHERE savingID = #{savingID}")
    int deleteById(Integer savingID);

    /**
     * 根据关键词查询存款类型
     * @param keyword 关键词
     * @return 匹配的存款类型列表
     */
    @Select("SELECT * FROM deposit WHERE savingName LIKE #{keyword} OR descrip LIKE #{keyword}")
    List<Deposit> searchByKeyword(String keyword);
}